package com.wx.chapter10.single_;

/**
 * ClassName:SingleTon01
 * Package :com.wx.chapter10.single_
 * Description :
 *
 * @Author : coder_mu
 * @Create : 2023/6/4 - 17:46
 */
public class SingleTon01 {
    public static void main(String[] args) {
        GirlFriend girlFriend = GirlFriend.getInstance();
        GirlFriend girlFriend1 = GirlFriend.getInstance();
        System.out.println(girlFriend == girlFriend1);
    }
}

class GirlFriend {
    private String name;

    //在类加载时就创建一个对象，保证是单例的，需要设计成静态的只加载创建一次
    private static GirlFriend gf = new GirlFriend("小红红");

    //需要将构造器设计为私有的，这样就不能随意创建对象，保证单例
    private GirlFriend(String name) {
        System.out.println("構造器被調用.");
        this.name = name;
    }

    //因为对象和构造器都设计成了私有的，所有外界拿不到，我们需要设计一个共有方法，可以让外界间接拿到这个单例对象
    public static GirlFriend getInstance() {
        return gf;
    }

    //获取对象属性
    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                '}';
    }
}